package cn.xianyang.system.listener;

import cn.xianyang.system.service.IPermissionScanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener//申明自定义的web监听器，被容器注册和使用
@Slf4j
public class PermissionScanListener implements ServletContextListener {

    @Autowired
    private IPermissionScanService permissionScanService;

    /**
     * 该方法位置是在spring项目的启动过程中执行，如果业务耗时，就会拖慢项目启动时间
     * 所以使用异步线程执行业务，这样不会影响到主线程
     * spring容器初始化结束之后被调用
     * @param sce
     */
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        new Thread(new Runnable() {
            //执行异步线程的业务
            @Override
            public void run() {
                log.info("权限初始化开始!");
                permissionScanService.scan();
                log.debug("权限扫描结束!");
            }
        }).start();
    }
}
